前言¶
本文档详细描述WS53V100 SDK适配openharmony XTS认证操作指导。
本文档主要适用以下工程师:
技术支持工程师
软件开发工程师
在本文中可能出现下列标志,它们所代表的含义如下。
更新“升级接口适配”章节内容。 |
||
概述¶
openharmony XTS认证具体描述与要求,请参考openharmony官网XTS信息。
WS53属于轻量级系统,只需要关注轻量级系统的测试项,当前最新自检表为《OpenHarmony设备兼容性规范3.2自检表_轻量系统.xlsx》,筛选出如下测试套:
本文档指导适配XTS认证所需的openharmonyAPI接口,按照《L0设备OpenHarmony适配通用指导》思路执行,本文档不再赘述。
准备工作¶
搭建openharmony编译环境(请参考openharmony官网环境搭建说明)。
下载openharmony源码(release 3.2)。
完成openharmony预编译。
并在该环境上完成WS53V100 SDK环境搭建,请参见《WS53V100 SDK开发环境搭建 用户指南》。
编译openharmony静态库¶
进入openharmony源码根目录,完成以下配置。
创建WS53V100工程¶
拷贝device/board/hisilicon/hispark_pegasus文件夹, 重命名为“ws53
cp -r device/board/hisilicon/hispark_pegasus device/board/hisilicon/ws53”。

在“device/soc/hisilicon”下创建ws53v100文件夹。
cd device/soc/hisilicon
mkdir ws53v100添加编译文件device/soc/hisilicon/ws53v100/BUILD.gn,文件内容如下:
# Copyright (C) 2024 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved.
group("ws53v100") {}进入ws53v100目录,将WS53V100 SDK拷贝到该目录下,并创建文件夹adapter/hals用存放升级及文件系统接口适配源码。
cd device/soc/hisilicon/ws53v100
cp -r ***/sdk ./mkdir adaptercd adaptermkdir hals
拷贝vendor/hisilicon/hispark_pegasus目录到vendor/hisilicon,并重命名为ws53;去掉demo,audio以及token,仅保留下图所示文件。
cp -r vendor/hisilicon/hispark_pegasus vendor/hisilicon/ws53
cd vendor/hisilicon/ws53rm -rf democd halsrm -rf audiorm -rf utils/token
子系统配置¶
子系统配置 vendor/hisilicon/ws53/config.json 设置L0认证所必要的子系统,可以根据自己实际情况裁剪和添加。配置如下:
{ "product_name": "wifiiot_ws53", "type": "mini", "version": "3.0", "ohos_version": "OpenHarmony 1.0", "device_company": "hisilicon", "device_build_path": "device/board/hisilicon/ws53", "board": "ws53", "kernel_type": "liteos_m", "kernel_is_prebuilt": true, "kernel_version": "", "subsystems": [ { "subsystem": "hiviewdfx", "components": [ { "component": "hilog_lite", "features":[] }, { "component": "hievent_lite", "features":[] } ] }, { "subsystem": "systemabilitymgr", "components": [ { "component": "samgr_lite", "features":[] } ] }, { "subsystem": "security", "components": [ { "component": "huks", "features": [ "disable_huks_binary = false", "disable_authenticate = false", "huks_use_lite_storage = true", "huks_use_hardware_root_key = true", "huks_config_file = \"hks_config_lite.h\"" ] } ] }, { "subsystem": "startup", "components": [ { "component": "bootstrap_lite", "features":[] }, { "component": "syspara_lite", "features":[] }, { "component": "init_lite", "features": [ "enable_ohos_startup_init_feature_begetctl_liteos = true" ] } ] }, { "subsystem": "updater", "components": [ { "component": "ota_lite", "features":[] } ] }, { "subsystem": "commonlibrary", "components": [ { "component": "file", "features":[] } ] }, { "subsystem": "xts", "components": [ { "component": "xts_acts", "features":[]}, { "component": "xts_tools", "features":[] } ] } ], "third_party_dir": "//third_party", "product_adapter_dir": "//vendor/hisilicon/ws53/hals" }
编译适配ohos.build
修改“vendor/hisilicon/ws53/ohos.build”,文件内容如下:
{ "parts": { "product_wifiiot_ws53": { "module_list": [ "//vendor/hisilicon/ws53:ws53" ] } }, "subsystem": "product_wifiiot_ws53" }
编译适配 BUILD.gn
修改“vendor/hisilicon/ws53/BUILD.gn”,文件内容如下:
# Copyright (C) 2024 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved. group("ws53") { }
工具链配置¶
配置编译工具链文件“device/board/hisilicon/ws53/liteos_m/config.gni”,文件内容如下:
# Copyright (C) 2024 Hisilicon (Shanghai) Technologies Co., Ltd. All rights reserved.
# Kernel type, e.g. "linux", "liteos_a", "liteos_m". kernel_type = "liteos_m" # Kernel version. kernel_version = "" # Board CPU type, e.g. "cortex-a7", "riscv32". board_cpu = "" # Board arch, e.g. "armv7-a", "rv32imac". board_arch = "rv32imac" # Toolchain name used for system compiling. # E.g. gcc-arm-none-eabi, arm-linux-harmonyeabi-gcc, ohos-clang, riscv32-unknown-elf. # Note: The default toolchain is "ohos-clang". It's not mandatory if you use the default toolchain. board_toolchain = "riscv32-linux-musl" # The toolchain path installed, it's not mandatory if you have added toolchain path to your ~/.bashrc. board_toolchain_path = "" # Compiler prefix. board_toolchain_prefix = "riscv32-linux-musl-" # Compiler type, "gcc" or "clang". board_toolchain_type = "gcc" # Board related common compile flags. board_cflags = [ "-mabi=ilp32", "-falign-functions=2", "-msave-restore", "-fno-optimize-strlen", "-freorder-blocks-algorithm=simple", "-fno-schedule-insns", "-fno-inline-small-functions", "-fno-inline-functions-called-once", "-mtune=size", "-mno-small-data-limit=0", "-fno-aggressive-loop-optimizations", "-std=c99", "-Wpointer-arith", "-Wstrict-prototypes", "-ffunction-sections", "-fdata-sections", "-fno-exceptions", "-fno-short-enums", "-Wextra", "-Wundef", "-U", "PRODUCT_CFG_BUILD_TIME", "-D__LITEOS__", "-DCMSIS_OS_VER=2", "-DLOSCFG_COMPAT_CMSIS_VER_2", "-DCHIP_WS53=1", "-DCHIP_VER_Hi3861", "-DLOSCFG_XTS_SUPPORT", ] board_cxx_flags = board_cflags board_ld_flags = [] # Board related headfiles search path. board_include_dirs = [ "${ohos_root_path}commonlibrary/utils_lite/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/include/driver", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/include/middleware/utils", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/chips/ws53/update/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/chips/ws53/partition/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/chips/ws53/littlefs", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/utils/update/inner_include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/middleware/utils/common_headers", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/drivers/chips/ws53/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/drivers/chips/ws53/include/acore", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/drivers/boards/ws53_fpga/memory_config/include/product", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/kernel/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/platform/libsec/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/drivers/interrupt/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/drivers/timer/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/targets/ws53/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/arch/riscv/include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/arch/riscv/include/arch", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/compat/cmsis", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/CMSIS/CMSIS/RTOS2/Include", "${ohos_root_path}device/soc/hisilicon/ws53v100/sdk/kernel/liteos/liteos_v208.5.0/Huawei_LiteOS/open_source/incubator-nuttx/include", ] # Board adapter dir for OHOS components. board_adapter_dir = "//device/soc/hisilicon/ws53v100/adapter" # Sysroot path. board_configed_sysroot = "" # Board storage type, it used for file system generation. storage_type = ""
编译适配 device/board/hisilicon/ws53/ohos.build,文件内容如下:
{
"parts": {"device_ws53": {"module_list": ["//device/soc/hisilicon/ws53v100:ws53v100"]}},"subsystem": "device_ws53"}
文件系统接口适配¶
拷贝WS53V100 SDK 文件系统接口适配文件到openharmony工程(把WS53V100 SDK中“littlefs_xts_adapt.c”文件拷贝到openharmony源码中“device/soc/hisilicon/ws53v100/adapter/hals/utils/file/src”目录):
cd device/soc/hisilicon/ws53v100/adapter/hals/ mkdir utils cd utils mkdir file cd file mkdir src cd src cp ~/ws53/sdk/middleware/utils/fs/adapter/xts/littlefs_xts_adapt.c ./
添加编译脚本“device/soc/hisilicon/ws53v100/adapter/hals/utils/file/BUILD.gn”,文件内容如下:
import("//build/lite/config/component/lite_component.gni") static_library("hal_file_static") { sources = [ "src/littlefs_xts_adapt.c" ] include_dirs = [ "//commonlibrary/utils_lite/hals/file", "//device/soc/hisilicon/ws53v100/sdk/include", ] }
文件目录结构如下图所示。

升级接口适配¶
拷贝 WS53V100 SDK升级适配文件到openharmony工程,(把WS53V100 SDK中upg_xts_adapt.c文件拷贝到openharmony源码中“device/soc/hisilicon/ws53v100/adapter/hals/update”目录):
cd device/soc/hisilicon/ws53v100/adapter/hals/ mkdir update cd update cp ~/ws53/sdk/middleware/utils/update/adapter/xts/upg_xts_adapt.c ./
文件upg_xts_adapt.c包含数组g_pub_key_buf为xts OTA升级所需要的公钥,应用时数组内容和长度需要修改。
公私密钥生成请参考openharmony开发指南,开源指导可参考:https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/subsystems/subsys-ota-guide.md#%E7%94%9F%E6%88%90%E5%85%AC%E7%A7%81%E9%92%A5%E5%AF%B9。
添加编译脚本“device/soc/hisilicon/ws53v100/adapter/hals/update/BUILD.gn”,文件内容如下:
import("//build/lite/config/component/lite_component.gni") static_library("hal_update_static") { sources = [ "upg_xts_adapt.c" ] include_dirs = [ "//base/update/ota_lite/hals", "//base/update/ota_lite/interfaces/kits", "//device/soc/hisilicon/ws53v100/sdk/include", ] }
文件目录结构如下图所示。

编译openharmony工程¶
进入openharmony源码根目录,执行hb set,选择“wifiiot_ws53”。

执行编译命令“hb build -f -b debug --gn-args build_xts=true”。编译成功后在“out\ws53\wifiiot_ws53\libs”路径下生成静态库
编译成功打印如下:

XTS版本编译和执行¶
SDK 链接openharmony静态库¶
将编译的openharmony静态库拷贝到WS53 SDK的二进制库目录下,命令依次为(请根据自己的目录修改命令)。
cd ws53/sdk/interim_binary/ws53/libs/ mkdir ohos cd ohos/ mkdir ws53_liteos_xts cd ws53_liteos_xts / cp ~/openharmony/adapt_3_2/out/ws53/wifiiot_ws53/libs/* ./
修改xts编译目标,链接上述库。
打开文件“ws53\sdk\build\config\target_config\ws53\config.py”,搜索" ws53_liteos_xts ",在'ram_component中加入如下库:
'bootstrap','broadcast','inithook','init_utils','begetutil','hctest', 'native_file','hal_file_static','init_log','hilog_static', 'hievent_lite_static','hiview_lite_static','hilog_lite_static', 'hota','hal_update_static', 'huks_3.0_sdk','huks_test_common', 'hal_sysparam','param_client_lite', 'samgr_source','samgr_adapter','samgr', 'module_ActsParameterTest','module_ActsBootstrapTest','module_ActsHieventLiteTest', 'module_ActsUtilsFileTest','module_ActsUpdaterFuncTest','module_ActsHuksHalFunctionTest', 'module_ActsDfxFuncTest', 'module_ActsSamgrTest',
编译XTS目标¶
进入SDK根目录,执行xts编译:
cd ~/ws53/sdk/
./build.py -c ws53_liteos_xts
执行用例¶
将“ws53\sdk\output\ws53\fwpkg\pack_all_core\ws53_liteos_xts\fpga_all_in_one.fwpkg”文件烧录到单板中,烧录配置与烧录APP版本一致。

烧录完成后重启单板,单板自动开始执行用例。

待用例执行完后,搜索日志中fail字段,查看是否存在未通过的用例(正常是全部通过)。




